#include "./include/client.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdio_ext.h>
#include <unistd.h>


//客户端主程序


int main(void)
{

    char ch = 0; 
    int iRet = 0, sockfd = 0, flag = 0; //flag 用于判断用户的状态
                                        // 0 表示未登录 1 表示普通用户登录 2 表示超级用户登录

    if( (sockfd = client_init()) < 0 ) //客户端初始化
    {
        return -1;
    }

    while(1)
    {
        switch(flag)
        {
            case 0:home_page();break;
            case 1:user_page();break;
            case 2:admin_page();break;
            default:puts("flag error exit client");return -1;
        }
        ch = getchar();
        __fpurge(stdin); //用户键入一个命令

        if(!flag) //根据不同的flag,做出不同的处理
        {

            switch(ch)
            {
                case 'l':iRet = login_request_hand(sockfd); //登录处理
                        if(iRet < 0)
                        {
                            break;
                        }
                        else if(iRet == 1)
                        {
                            flag = 1;
                            break;
                        }
                        else
                        {
                            flag = 2;
                            break;
                        }

                case 'q': client_exit(sockfd); return 0; //退出
                default : puts("input error (use 'l' or 'q')");


            }
        }
        else if(flag == 1)
        {
            switch(ch)
            {

                case 'c':iRet = user_chgpass_hand(sockfd);break; //用户修改密码
                case 's':iRet = alluser_search_hand(sockfd, 1);break; //用户查询信息
                case 'Q':flag = 0;break;//退出
                default: puts("The command that you input is not illeagal,reinput:");break;

            }
            
        }
        else
        {
            switch(ch)
            {

                case 'S': iRet = alluser_search_hand(sockfd, 2);break; //用户查询
                case 'a': iRet = admin_adduser_hand(sockfd);break; //添加用户
                case 'C': iRet = admin_chguser_msg_hand(sockfd);break;//修改用户信息
                case 'd': iRet = admin_deluser_hand(sockfd);break;//删除用户
                case 'Q': flag = 0;break;//退出

                default: puts("The command that you input is not illeagal,reinput:");break;


            }


        }


    }

    close(sockfd);
    
    return 0;
}
